//
//  YLEmptyDataStyleManager.swift
//  Swift-Codedase
//
//  Created by xyanl on 2023/9/12.
//
//  占位符默认样式统一管理

import UIKit

extension YLEmptyDataProvider {
    
    /// 默认的，可以作为通用的。
    /// 比如说多个页面都需要一个断开网络链接的，然后再根据页面需求添加当前页面需要的placeholder
    public static var `default`: YLEmptyDataProvider {
        return YLEmptyDataProvider([
            YLEmptyDataObject(.noNetwork), 
            YLEmptyDataObject(.noData), 
            YLEmptyDataObject(.noSearchResults, showHeader: true, showFooter: true),
        ])
    }
    
    /// 好友关系列表
    static func relations() -> [YLEmptyDataObject] {
        return [
            YLEmptyDataObject(.relationNoFollow), 
            YLEmptyDataObject(.relationNoFans),
        ]
    }
}

// MARK: - 创建占位符的数据模型
extension YLEmptyDataModel {
    // MARK: - default 占位符
    /// 没有网络
    public static var noNetwork: YLEmptyDataModel {
        var data = YLEmptyDataModel(key: "noNetwork", cell: "EmptyPlaceholderRelationTableViewCell")
        data.image = UIImage(named: "ic_ep_no_netword")
        data.action = "重试"
        return data
    }
    
    /// 没有数据的占位符
    public static var noData: YLEmptyDataModel {
        var data = YLEmptyDataModel(key: "noData", cell: "EmptyPlaceholderRelationTableViewCell")
        data.image = UIImage(named: "ic_ep_no_data")
        return data
    }
    
    
    /// 没有搜索结果
    public static var noSearchResults: YLEmptyDataModel {
        var data = YLEmptyDataModel(key: "noSearchResults", cell: "EmptyPlaceholderRelationTableViewCell")
        data.image = UIImage(named: "ic_ep_no_searchResult")
        return data
    }
    
    
    // MARK: - 关系列表 占位符
    /// 关系列表 - 没有关注
    public static var relationNoFollow: YLEmptyDataModel {
        var data = YLEmptyDataModel(key: "relationNoFollow", cell: "EmptyPlaceholderRelationTableViewCell")
        data.image = UIImage(named: "ic_ep_relation_user")
        data.title = "暂无关注"
        data.subtitle = "他/她还没有关注过其他人。"
        return data
    }
    
    /// 关系列表 - 没有粉丝
    public static var relationNoFans: YLEmptyDataModel {
        var data = YLEmptyDataModel(key: "relationNoFans", cell: "EmptyPlaceholderRelationTableViewCell")
        data.image = UIImage(named: "ic_ep_relation_user")
        data.title = "暂无粉丝"
        data.subtitle = "还没有人关注他/她！"
        return data
    }
    
    
    /// 没有订单
    public static var noOrder: YLEmptyDataModel {
        var data = YLEmptyDataModel(key: "noOrder", cell: "EmptyPlaceholderRelationTableViewCell")
        data.image = UIImage(named: "ic_default_order")
        return data
    }
}

extension YLEmptyDataTableView {
    
    /// 注册占位符cell，统一在该方法中实现
    func registerEmptyDataTableViewCell() {
        register(UINib.init(nibName: "EmptyPlaceholderRelationTableViewCell", bundle: nil), forCellReuseIdentifier: "EmptyPlaceholderRelationTableViewCell")
    }
}
